'''

迭代器协议是Python中用于定义迭代器行为的一组规则。迭代器协议要求对象必须实现两个方法：
__iter__(): 返回迭代器对象本身。这个方法使得迭代器对象可以在 for 循环中使用。
__next__(): 返回迭代器中的下一个值。如果没有更多的值可以返回，则抛出 StopIteration 异常。
示例代码

'''

class MyIterator:
    def __init__(self, start, end):
        self.current = start
        self.end = end

    # 实现迭代器协议，如果换成其他名字，TypeError: 'MyIterator' object is not iterable
    def __iter__(self):
        return self

    def __next__(self):
        if self.current < self.end:
            self.current += 1
            return self.current - 1
        else:
            raise StopIteration

# 使用迭代器
my_iter = MyIterator(1, 5)
for num in my_iter:
    print(num)

# 尝试再次遍历迭代器, 上面的已经耗尽了，需要重新创建迭代器
for num in my_iter:
    print(num)

'''

解释
MyIterator 类实现了迭代器协议，包含 __iter__() 和 __next__() 方法。
__iter__() 方法返回迭代器对象本身。
__next__() 方法返回当前值，并在没有更多值时抛出 StopIteration 异常。


注意事项
迭代器对象只能遍历一次，遍历完后需要重新创建迭代器对象。
迭代器协议是Python中许多内置类型（如列表、字典等）能够被 for 循环遍历的基础。

'''